# -*- coding: UTF-8 -*- #
"""
-------真正的勇士， 敢于直面惨淡的Warning、 敢于正视淋漓的Error-----
@author : 贾鹏博
@file : 9、雪球 app 自动化测试实战练习.py
@time : 2022/5/26 13:40
"""

"""
被测应用 ： 雪球 App
雪球 App 介绍
    雪球 App 是一款免费版，非常实用的股票平台，提供热点资讯内容和实时行情，提供了证券交易、公募、理财任务
    雪球 App 功能包括搜索股票，查看行情，交易，浏览热门文章，发帖，登录，注册等功能

雪球 app 搜索功能点自动化实战
    测试用例设置：
        1、打开 雪球 应用首页
        2、点击搜素框（点击之前，判断搜素框的是否可用，并查看搜素框 name 属性值，并获取搜索框坐标，以及它的宽高）
        3、向搜索框输入 'alibaba'
        4、判断 [阿里巴巴] 是否可见
            如果可见，打印'搜素成功'
            如果不可见，打印'搜索失败'
            
用例编写思路
    1、pytest 测试框架
    2、添加隐式等待
    3、添加 setup teardown
    4、添加断言      
"""

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy


class TestSearch:
    def setup(self):
        desired_caps = {}
        desired_caps['platformName'] = "Android"
        desired_caps['platformVersion'] = '6.0'
        desired_caps['deviceName'] = 'emulator-5554'
        desired_caps['appPackage'] = 'com.xueqiu.android'
        desired_caps['appActivity'] = '.view.WelcomeActivityAlias'
        desired_caps['noReset'] = 'true'
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        # 隐式等待
        self.driver.implicitly_wait(10)

    def teardown(self):
        self.driver.quit()

    def test_search(self):
        """
        1、打开 雪球 应用首页
        2、点击搜素框（点击之前，判断搜素框的是否可用，并查看搜素框 name 属性值，并获取搜索框坐标，以及它的宽高）
        3、向搜索框输入 'alibaba'
        4、判断 [阿里巴巴] 是否可见
            如果可见，打印'搜素成功'
            如果不可见，打印'搜索失败'
        @return:
        """
        # 1、判断搜素框的是否可用，并查看搜素框 name 属性值，并获取搜索框坐标，以及它的宽高
        searchbox_ele = self.driver.find_element(AppiumBy.ID, 'com.xueqiu.android:id/tv_search')
        # 先判断 搜素框是否可用
        if searchbox_ele.is_enabled():
            # 获取文本
            searchbox_text = searchbox_ele.get_attribute('text')
            # 获取坐标
            searchbox_location = searchbox_ele.location
            # 获取宽高
            searchbox_size = searchbox_ele.size
            # 首页搜素框的 text 是搜索股票/组合/用户/讨论
            print(f'首页搜素框的 text 是{searchbox_text}')
            # 首页搜素框的 location坐标 是{'x': 173, 'y': 80}
            print(f'首页搜素框的 location坐标 是{searchbox_location}')
            # 首页搜素框的 size 宽高 是{'height': 48, 'width': 374}
            print(f'首页搜素框的 size 宽高 是{searchbox_size}')
            # 2、点击搜索框
            searchbox_ele.click()
            # 3、向搜索框输入 'alibaba'
            search_key = 'alibaba'
            self.driver.find_element(AppiumBy.ID, 'com.xueqiu.android:id/search_input_text').send_keys(search_key)
            alibaba_element = self.driver.find_element(AppiumBy.XPATH, "//*[@text='阿里巴巴']")
            # 4、判断 [阿里巴巴] 是否可见
            alibab_desplayed = alibaba_element.is_displayed()
            print(alibab_desplayed)  # True
            if alibab_desplayed == True:
                print('搜素成功')
            else:
                print('搜素失败')
            assert alibab_desplayed == True, "搜素失败"
        else:
            print('搜素框不可用')
            assert False
